package com.baige.facade.user;

import com.baige.common.exception.UserBizException;
import com.baige.facade.dto.UserDTO;

/**
 * 用户--facade
 * @author wulg
 * @date 2018/12/12.
 */
public interface UserFacade
{

    /**
     * 根据用户id查询用户信息
     * @param userId 用户id
     * @return UserDTO
     */
    UserDTO getUserDTOByUserId(String userId);

    /**
     * 根据用户手机号查询用户信息
     * @param phone 用户手机号
     * @return UserDTO
     */
    UserDTO getUserDTOByPhone(String phone);

    /**
     * 新增用户
     * @param userDTO 新增用户信息
     * @return UserDTO
     * @throws UserBizException 用户业务异常
     */
    UserDTO addUser(UserDTO userDTO)throws UserBizException;

    /**
     * 绑定微信
     *
     * @param userId 用户id
     * @param openId 微信openId
     * @param bind 是否绑定
     * @throws UserBizException 用户业务异常
     */
    void bindWechat(String userId, String openId,boolean bind) throws UserBizException;

    /**
     * 绑定微博
     *
     * @param userId 用户id
     * @param openId 微博openId
     * @param bind 是否绑定
     * @throws UserBizException 用户业务异常
     */
    void bindWeibo(String userId, String openId,boolean bind) throws UserBizException;

    /**
     * 修改用户
     * @param userDTO 修改用户信息
     * @return UserDTO
     * @throws UserBizException 用户业务异常
     */
    UserDTO modifyUser(UserDTO userDTO)throws UserBizException;

    /**
     *
     * 是否是新用户
     * @param userId 用户id
     * @return boolean
     */
    boolean isNewUser(String userId);

    /**
     *
     * 是否是会员
     * @param userId 用户id
     * @return boolean
     */
    boolean isVipUser(String userId);
}
